//
//  NSDate+Sina.m
//  XinLang_OC
//
//  Created by WONG on 16/4/1.
//  Copyright © 2016年 cheuhui. All rights reserved.
//

#import "NSDate+Sina.h"

@implementation NSDate (Sina)

+ (instancetype)sinaStringToDate:(NSString *)string {
    // 创建NSDateFormatter
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    // 设置区域
    df.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en"];
    // 要将字符串转成NSDate需要自定义日期字符串的格式
    df.dateFormat = @"EEE MMM dd HH:mm:ss zzz yyyy";
    // 将字符串转成NSDate
    NSDate *date = [df dateFromString:string];
    // 如果转换失败就返回一个当前时间
    return date ? date : [NSDate date];
}

- (NSString *)sinaDateDescription {
    // 比较时间, iOS比较时间使用NSCalendar
    NSCalendar *calendar = [NSCalendar currentCalendar];
    // 判断当前对象是否是今天
    if ([calendar isDateInToday:self]) {
        // 获取系统当前时间和当前对象相差多少秒
        int delta = (int)[[NSDate date] timeIntervalSinceDate:self];
        
        // 判断
        if (delta < 60) { // 一分钟内
            return @"刚刚";
        } else if (delta < 60 * 60) { // 一小时内
            return [NSString stringWithFormat:@"%zd分钟前",delta / 60];
        } else {
            return [NSString stringWithFormat:@"%zd小时前",delta / 3600];
        }
    }
    // 其他时间需要返回特殊格式的日期字符串
    
    // 日期格式
    NSString *dateFormat = @"";
    
    // 判断当前对象是否是昨天
    if ([calendar isDateInYesterday:self]) {
        dateFormat = @"昨天 HH:mm";
    } else {
        // 一年内,还是更早期, 同一年表示一年内,不是同一年表示更早期
        /*
             compareDate
             date1: 第一个日期
             toDate: 第二个日期
             toUnitGranularity: 要比较的单位
         */
        if ([calendar compareDate:self toDate:[NSDate date] toUnitGranularity:NSCalendarUnitYear] == NSOrderedSame) {
            // 同一年
            dateFormat = @"mm-dd HH:mm";
        } else {
            // 更早年
            dateFormat = @"yyyy-MM-dd HH:mm";
        }
        
    }
    // 将当前日期根据格式，转成特殊日期格式字符串
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    
    df.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en"];
    df.dateFormat = dateFormat;
    
    // 将self转成日期字符串
    return [df stringFromDate:self];
}


@end












